package com.night.icm.persistence.base.entity;

import com.night.icm.common.night_enum.CourseBaseType;
import lombok.Data;

import javax.persistence.*;

/**
 * CourseType
 * 用于学生学业进展的各项毕业最低学分要求的学分分类
 * 主要分三类：必修课，任选课，限选课
 * 如 ：必修学分	学科基础选修	专业选修	公共选修	实践学分	创新分	毕业实习	毕业论文
 *
 * @author Liao ZhiYong
 * @date 2020/2/1
 */
@Entity
@Data
@Table(name = "night_icm_course_type")
public class CourseType {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    /**
     * 课程详细类型编码
     */
    @Column(name = "code", length = 50, nullable = false, unique = true)
    private String code;

    /**
     * 课程详细类型名称
     */
    @Column(name = "name", length = 100, nullable = false)
    private String name;

    /**
     * 课程基础分类: 必修课，任选课，限选课
     * 非必填
     */
    @Column(name = "course_base_type")
    @Enumerated(EnumType.STRING)
    private CourseBaseType courseBaseType;

    /**
     * 显示顺序
     */
    @Column(name = "show_order", nullable = false)
    private int showOrder = 0;

//    /**
//     * 课程类型关联的课程
//     */
//    @ManyToMany(mappedBy = "courseTypes", fetch = FetchType.LAZY)
//    private List<Course> courses = new ArrayList<>();
}